// 10. 正则表达式匹配

function isMatch(s: string, p: string): boolean {
    //* 都是空的
    const l1 = s.length
    const l2 = p.length

    
    //* 第一个是否匹配
    //* .匹配任意非空的字符
    const firstMatch =(s[0]&&p[0]=='.')||p[0]==s[0]

    //* 检测  *
    if(l2>=2&&p[1]=='*'){
    //* *前面的字符出现0次 或者多次,当前必须匹配
    return isMatch(s,p.substring(2)) ||(firstMatch&&isMatch(s.substring(1),p))
    }

    if(l1==0||l2==0) return l1+l2==0

    
    //* 检测其他
    if(firstMatch) return isMatch(s.substring(1),p.substring(1))
    return false
};


//! 可以使用动态规划进行优化

const s = 'ab'
const p = '.*c'
console.log(isMatch(s,p))